home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
clang
/
cslib15b.zip
/
INCLUDE
/
CSARRAY.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-12-20
|
3KB
|
96 lines
/***********************************************************************
CSDB Library, Release 1.5.b
Definition of a virtual array class with
boundary checking.
Copyright(c) 1994
Combis
The Netherlands
***********************************************************************/
#ifndef __CSARRAY_H
#define __CSARRAY_H
#include "stdlib.h"
#include "stdio.h"
#include "csedstr.h"
#ifdef CS_DEBUG
#define TEST_IN(key) test_index(key);
#else
#define TEST_IN(key)
#endif
typedef union
{
void * p;
long l;
} dat;
#pragma warn -sig
class ARRAY
{
private:
protected:
size_t nr_lin;
dat *lbuf;
STR d_name;
void test_index(long key);
public:
ARRAY(void);
~ARRAY(void);
void zap(void);
void debug_name(char *s);
void size(size_t nr);
void insert(long key,void *d) { TEST_IN(key) lbuf[key].p=d; }
void insert(long key,long d) { TEST_IN(key) lbuf[key].l=d; }
void delet(long key) { TEST_IN(key) lbuf[key].p=NULL; }
void *locate(long key) { TEST_IN(key) return lbuf+key; }
void *locate(size_t key) { TEST_IN(key) return lbuf+key; }
void search(long key,void *&d) { TEST_IN(key) d=lbuf[key].p; }
void search(long key,long &d) { TEST_IN(key) d=lbuf[key].l; }
void search(long key,void *&d,void** &add)
{ TEST_IN(key) d=*(add=&lbuf[key].p); }
void search(long key,long &d,long * &add)
{ TEST_IN(key) d=*(add=&lbuf[key].l); }
void insert(int key,dat d) { TEST_IN(key) lbuf[key]=d; }
void insert(int key,void *d) { TEST_IN(key) lbuf[key].p=d; }
void insert(int key,void *d,void ** &add)
{ TEST_IN(key) add=&(lbuf[key].p=d); }
void insert(int key,long d) { TEST_IN(key) lbuf[key].l=d; }
void insert(int key,long d,long * &add)
{ TEST_IN(key) add=&(lbuf[key].l=d); }
void delet(int key) { TEST_IN(key) lbuf[key].p=NULL; }
void search(int key,void *&d) { TEST_IN(key) d=lbuf[key].p; }
void search(int key,long &d) { TEST_IN(key) d=lbuf[key].l; }
int report(char *name,int sub=10);
void report(FILE *fipo,int sub=10);
long export(FILE *fp,long nr);
long export(FILE *fp) { return export(fp,nr_lin+1); }
long import(FILE *fp,long number);
void empty(void);
};
#pragma warn .sig
#endif